Within the field of computing, many scenarios involve the generation of logical representations of storage devices on a computer. As a first example, a locally attached hard disk drive may be attached to a computer using a bus, and may interface with the computer through a storage device driver that presents one or more partitions of the hard disk drive to the computer as a logical volume. As a second example, a network-attached storage (NAS) appliance, such as a Redundant Array of Inexpensive Disks (RAID) array, may be loaded with hard disk drives and may communicate with over a network with a computer, which may mount a volume exposed by the NAS appliance as a network volume. As a third example, a virtual hard disk drive (VHD) may be generated as a block of storage allocated on another device, and may be presented to the computer as a virtual volume. These and other examples may suggest that a variety of physical and virtual storage devices with varying properties and interfaces may be presented to a computer. In order to reduce the complexity of interacting with this variety of storage devices, the computer may specify a logical representation standard, such that a driver may present a logical representation of the storage device that the computer may utilize as storage in a comparatively standard manner, irrespective of the type, location, characteristics, or complexity of the underlying storage device.
Also within the field of computing, many scenarios involve a cluster of interoperate nodes connected by a network, such as a server farm of devices that cooperatively provide a service. In these scenarios, the nodes may share one or more storage pools, and may establish protocols for using such storage devices (e.g., in order to reduce write conflicts and deadlocks). The storage pools may be provided by the shared capacity of one or more storage devices, each of which may be connected to a storage device and/or to the network, and the capacity provided by such storage devices may be aggregated in many ways.